module.exports = function (app, pool, bcrypt) {
    // 登录API
    app.post('/api/login', async (req, res) => {
        try {
            const { email, password } = req.body;

            // 验证输入
            if (!email || !password) {
                return res.status(400).json({ message: '请提供邮箱和密码' });
            }

            // 查询用户
            const [rows] = await pool.execute('SELECT * FROM users WHERE email = ?', [email]);

            if (rows.length === 0) {
                return res.status(401).json({ message: '邮箱或密码不正确' });
            }

            const user = rows[0];

            // 验证密码
            const passwordMatch = await bcrypt.compare(password, user.password_hash);

            if (!passwordMatch) {
                return res.status(401).json({ message: '邮箱或密码不正确' });
            }

            // 登录成功
            res.status(200).json({ message: '登录成功' });

        } catch (error) {
            console.error('登录错误:', error);
            res.status(500).json({ message: '服务器内部错误' });
        }
    });

    // 注册API
    app.post('/api/register', async (req, res) => {
        try {
            const { email, password } = req.body;

            // 验证输入
            if (!email || !password) {
                return res.status(400).json({ message: '请提供邮箱和密码' });
            }

            // 检查邮箱格式
            const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
            if (!emailRegex.test(email)) {
                return res.status(400).json({ message: '请提供有效的邮箱地址' });
            }

            // 检查密码强度（示例：至少8个字符）
            if (password.length < 8) {
                return res.status(400).json({ message: '密码长度至少为8个字符' });
            }

            // 哈希密码
            const saltRounds = 10;
            const passwordHash = await bcrypt.hash(password, saltRounds);

            // 创建用户
            await pool.execute(
                'INSERT INTO users (email, password_hash) VALUES (?, ?)',
                [email, passwordHash]
            );

            res.status(201).json({ message: '注册成功，请登录' });

        } catch (error) {
            // 处理唯一约束冲突
            if (error.code === 'ER_DUP_ENTRY') {
                return res.status(400).json({ message: '该邮箱已被注册' });
            }

            console.error('注册错误:', error);
            res.status(500).json({ message: '服务器内部错误' });
        }
    });
}